package com.cskaoyan._09static._04classload;

/**
 * @description:
 * @author: 景天
 * @date: 2023/2/6 14:43
 **/
/*
类加载时机:
1.执行main方法的时候
2.(首次)创建对象之前
3.(首次)访问类中的静态成员的时候(静态成员变量,静态方法)

static VS 非static
1. 成员的所属
    static属于类
    非static属于对象
2. 在内存中的位置
    static在类加载过程中生成的这个类所对应的字节码文件对象中(Class对象),或者在方法区的静态域中
    非static在堆上的对象里面
3. 在内存中出现的时间
    static伴随这类的加载而加载,一定先于非static的
    非static的成员随着对象的创建而存在
4. 调用方式
    static调用,通过类名.可以,也可以通过对象.调用(使用的时候要求使用类名.方式调用)
    非static的调用,通过对象.方式调用

 */
public class Demo {
    public static void main(String[] args) {
        // 访问A中的静态成员
        System.out.println("A.a = " + A.a);

        A.m1();
    }
}

class A{
    // 静态成员变量
    static int a  =1;

    public static void m1() {
        System.out.println("mmmmmmm");
    }
}